home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1997 / HAM Radio 1997.iso / vcls / wsanet8a / wsanet / src / netclnt.h < prev    next >
C/C++ Source or Header  |  1996-04-08  |  20KB  |  873 lines

  1. /* NETCLNT.H - NetClient's Header file */
  2.  
  3.    /* Resource #defines */
  4. #define IDBMP_CLIENT     8000
  5. #define IDBMP_CLIENTDOWN 8001
  6. #define IDBMP_CLIENTMONO 8003
  7. #define IDBMP_CLIENTEGA  8006
  8. #define IDDLG_ABOUT      200
  9.  
  10. #define IDTIME_TIMEOUT   1
  11. #define IDTIME_FLUSH     2
  12.  
  13. #ifndef IDOK
  14. #define IDOK 1
  15. #endif
  16.  
  17.     // All of the property indicies
  18. // Enumerations ofProperties in NetClient_Properties[]
  19. // MUST BE IN SAME ORDER
  20. enum enum_netclient_props
  21. {
  22.    /* Standard properties */
  23.  
  24.  IPROP_NECLIENT_CTLNAME,
  25.  IPROP_NETCLIENT_PARENT,
  26.  IPROP_NETCLIENT_INDEX,
  27.  IPROP_NETCLIENT_TOP,
  28.  IPROP_NETCLIENT_LEFT,
  29.  IPROP_NETCLIENT_TAG,
  30.  IPROP_NETCLIENT_HWND,
  31.     /* Custom properties */
  32.  IPROP_NETCLIENT_ABOUT,
  33.  IPROP_NETCLIENT_SOCKET,
  34.  IPROP_NETCLIENT_HOSTNAME,
  35.  IPROP_NETCLIENT_HOSTADDR,
  36.  IPROP_NETCLIENT_LOCALPORT,
  37.  IPROP_NETCLIENT_REMOTEPORT,
  38.  IPROP_NETCLIENT_RECVLINE,
  39.  IPROP_NETCLIENT_SENDLINE,
  40.  IPROP_NETCLIENT_LINE,
  41.  IPROP_NETCLIENT_LINEDELIMITER,
  42.  IPROP_NETCLIENT_RECVCOUNT,
  43.  IPROP_NETCLIENT_SENDCOUNT,
  44.  IPROP_NETCLIENT_RECVSIZE,
  45.  IPROP_NETCLIENT_SENDSIZE,
  46.  IPROP_NETCLIENT_RECVTHRESHOLD,
  47.  IPROP_NETCLIENT_SENDTHRESHOLD,
  48.  IPROP_NETCLIENT_CONNECT,
  49.  IPROP_NETCLIENT_TIMEOUT,
  50.  IPROP_NETCLIENT_ERRORNUMBER,
  51.  IPROP_NETCLIENT_ERRORMESSAGE,
  52.  IPROP_NETCLIENT_LOCALSERVICE,    // Change from alpha 2!
  53.  IPROP_NETCLIENT_REMOTESERVICE,
  54.  IPROP_NETCLIENT_VERSION,         // Change from alpha 6!
  55.  IPROP_NETCLIENT_DEBUG,
  56.  IPROP_NETCLIENT_HOSTALIASCOUNT,
  57.  IPROP_NETCLIENT_HOSTALIASLIST,
  58.  IPROP_NETCLIENT_HOSTADDRESSCNT,
  59.  IPROP_NETCLIENT_HOSTADDRESSLIST,
  60.  IPROP_NETCLIENT_HOST,
  61.  IPROP_NETCLIENT_NONE1,           // Expansion for 7 properties!
  62.  IPROP_NETCLIENT_NONE2,           // (pre VB2.0 properties that is)
  63.  IPROP_NETCLIENT_NONE3,
  64.  IPROP_NETCLIENT_NONE4,
  65.  IPROP_NETCLIENT_NONE5,
  66.  IPROP_NETCLIENT_NONE6,
  67.  IPROP_NETCLIENT_NONE7,
  68.      // These three are only available to VB2.00+ apps
  69.  IPROP_NETCLIENT_RECVBLOCK,
  70.  IPROP_NETCLIENT_SENDBLOCK,
  71.  IPROP_NETCLIENT_BLOCK
  72. };
  73.  
  74. typedef struct tagONERRORPARMS
  75. {
  76.  SHORT FAR *ErrorNumber;
  77.  LPVOID Index;
  78. } ONERRORPARMS;
  79.  
  80.  
  81. // Enumerate the Events in NetClientEvents[]
  82. // MUST BE IN SAME ORDER
  83. enum enum_client_events
  84. {
  85.  IEVENT_NETCLIENT_ONCONNECT,
  86.  IEVENT_NETCLIENT_ONRECV,
  87.  IEVENT_NETCLIENT_ONSEND,
  88.  IEVENT_NETCLIENT_ONCLOSE,
  89.  IEVENT_NETCLIENT_ONTIMEOUT,
  90.  IEVENT_NETCLIENT_ONERROR
  91. };
  92.  
  93. // Errors sent back to VB (and .RC identifiers)
  94. #define ERR_None                0
  95.  
  96. // These are sent ONLY to the OnError Event!
  97. //#define ERR_Base                100
  98. /*#define ERR_NoWinSock           100
  99. #define ERR_BadVersion          101
  100. #define ERR_NotConn             102
  101. #define ERR_AlreadyConn         103
  102. #define ERR_RecvNotEmpty        104
  103. #define ERR_SendOverFlow        105
  104. #define ERR_BadHostAddr         106
  105. #define ERR_NoTimers            107
  106. #define ERR_InvalidString       108
  107. #define ERR_HostUnknown         109
  108. #define ERR_RecvBuffer          110
  109. #define ERR_SendBuffer          111
  110. #define ERR_CantSet             112
  111. #define ERR_Last                113
  112. #define ERR_BadSocket           114
  113. #define ERR_BufferNotEmpty      115
  114. */
  115. //#define NETBASEERR              200
  116.  
  117.  
  118.     /* Miscellaneous #defines for defaults and odd variables */
  119. #define WSA_VERSION_NEEDED  0x0101
  120.  
  121. // Defaults for properties
  122. #define DEFAULT_TIMEOUT       30000
  123. #define DEFAULT_PORT          0
  124. #define DEFAULT_RECVSIZE      8192
  125. #define DEFAULT_SENDSIZE      4096
  126. #define DEFAULT_RECVTHRESHOLD 1
  127. #define DEFAULT_SENDTHRESHOLD 0
  128.  
  129. // No more than 20 host aliases or addresses!
  130. #define MAX_HOSTTABLESIZE     20
  131.  
  132. typedef struct tagHOSTTABLE
  133. {
  134.  int iHostCount;
  135.  MOLE mHost[MAX_HOSTTABLESIZE];
  136. } HOSTTABLE;
  137.  
  138.     /* PROPERTIES */
  139. typedef struct tagNETCLIENT
  140. { // When in Rome...
  141.  MOLE  mHostName;
  142.  MOLE  mHostAddr;
  143.  
  144.  SHORT sRemotePort;      // remote port to connect to
  145.  SHORT sLocalPort;       // local port to connect to
  146.  
  147.  HSZ   hszLineDelimiter; // Delimiter for Lines
  148.  HSZ   hszRawLineDelimiter; // wsprint() parsed LineDelimiter
  149.  
  150.  HLSTR hlRecvBlock;      // These CAN have embedded Zeros (VB2.00+ only)
  151.  HLSTR hlSendBlock;      // Everything is sent "raw" - perfect for binary
  152.  
  153.  SHORT sRecvThreshold;   // Threshold before which OnRecv is called
  154.  SHORT sSendThreshold;   // Low-water mark before OnSend is triggered
  155.  SHORT sRecvSize;        // Total size of RecvBuffer
  156.  SHORT sSendSize;        // Total size of SendBuffer
  157.  SHORT sRecvCount;       // Current bytes waiting processing
  158.  SHORT sSendCount;       // Current bytes waiting to be sent
  159.  BOOL  bConnect;         // TRUE if connection exists, FALSE otherwise
  160.  SHORT sTimeOut;         // Countdown to next timeout
  161.  
  162.  SHORT sErrorNumber;     // ErrorNumber for OnError
  163.  
  164.     // elements not used, just markers (to make VB happy)
  165.  HSZ   hszAbout;
  166.  
  167.     // "Hidden" properties - nonpublic (OOP! Eeek!)
  168.  SOCKET sSocket;      // Socket of any connection
  169.  SOCKADDR_IN saHost;  // Address structure to Host
  170.  
  171.  BOOL   fCanSend;     // Flag: Enabled during FD_WRITE after WOULDBLOCK
  172.  HANDLE hRecvBuffer;  // handle to the receive buffer
  173.  HANDLE hSendBuffer;  // handle ro the send buffer
  174.  HANDLE hRecvTemp;    // handle to the temporary receive space
  175.  HANDLE hSendTemp;    // handle to the temporary send space
  176.  LPSTR  lpRecvBuffer; // locked pointer to the receive buffer
  177.  LPSTR  lpSendBuffer; // locked pointer to the send buffer
  178.  LPSTR  lpRecvTemp;   // locked pointer to the temporary receive space
  179.  LPSTR  lpSendTemp;   // locked pointer to the temporary send space
  180.  
  181.  SHORT  sRecvTempSize;// size of temporary receive space
  182.  SHORT  sSendTempSize;// size of temporary send space
  183.  SHORT  sTimeOutStore;// Storage for resetting TimeOut when it gets to 0
  184.  
  185.  HOSTTABLE htHostAddressList;
  186.  HOSTTABLE htHostAliasList;
  187. } NETCLIENT;
  188.  
  189. typedef NETCLIENT FAR * LPNETCLIENT;
  190.  
  191.  
  192. #ifdef WSANet_C
  193.  
  194.     // Anti-Ugly code macro
  195. #define VBGETOFFSET(arg) ((USHORT)&(((NETCLIENT *)0)->arg))
  196.  
  197.     // About property - open up the About dialog box
  198. PROPINFO Property_About =
  199. {
  200.  "About",
  201.  DT_SHORT | PF_fGetData | PF_fSetData | PF_fNoRuntimeW
  202.  | PF_fGetHszMsg | PF_fNoInitDef,
  203.  0,
  204.  0, 0, NULL, 0
  205. };
  206.  
  207.     // Socket property - the actual socket
  208. PROPINFO Property_Socket =
  209. {
  210.  "Socket",
  211.  DT_SHORT | PF_fGetData | PF_fSetMsg | PF_fNoInitDef,
  212.  VBGETOFFSET(sSocket),
  213.  0, 0, NULL, 0
  214. };
  215.  
  216.     // HostName property - DNS name of HostIP
  217. // Changing this will alter HostIP to the appropriate
  218. // internet address in dotted string notation.
  219. // You will not have to be connected.
  220. PROPINFO Property_HostName =
  221. {
  222.  "HostName",
  223.  DT_HSZ | PF_fGetMsg | PF_fSetMsg | PF_fNoInitDef,
  224.  0,
  225.  0, 0, NULL, 0
  226. };
  227.  
  228.     // HostAddr property - IP address of HostName
  229. // Changing this will alter HostName to the appropriate
  230. // name.
  231. // You will not have to be connected.
  232. PROPINFO Property_HostAddr =
  233. {
  234.  "HostAddr",
  235.  DT_HSZ | PF_fGetMsg | PF_fSetMsg | PF_fNoInitDef,
  236.  0,
  237.  0, 0, NULL, 0
  238. };
  239.  
  240.     // LocalPort Property - TCP port on the Local host
  241. PROPINFO Property_LocalPort =
  242. {
  243.  "LocalPort",
  244.  DT_SHORT | PF_fGetData | PF_fSetMsg |
  245.      PF_fNoInitDef,
  246.  VBGETOFFSET(sLocalPort),
  247.  0, 0, NULL, 0
  248. };
  249.  
  250.     // LocalService Property - Service name for LocalPort
  251. PROPINFO Property_LocalService =
  252. {
  253.  "LocalService",
  254.  DT_HSZ | PF_fGetMsg | PF_fSetMsg | PF_fNoInitDef,
  255.  0,          // DUMMY! (we handle set/get with messages)
  256.  0, 0, NULL, 0
  257. };
  258.  
  259.     // RemotePort Property - TCP port on the remote host
  260. PROPINFO Property_RemotePort =
  261. {
  262.  "RemotePort",
  263.  DT_SHORT | PF_fGetData | PF_fSetMsg |
  264.     PF_fSaveData | PF_fDefVal,
  265.  VBGETOFFSET(sRemotePort),
  266.  0, DEFAULT_PORT, NULL, 0
  267. };
  268.  
  269.     // RemoteService Property - Service name for RemotePort
  270. PROPINFO Property_RemoteService =
  271. {
  272.  "RemoteService",
  273.  DT_HSZ | PF_fGetMsg | PF_fSetMsg | PF_fSaveData |
  274.     PF_fNoInitDef,
  275.  0,
  276.  0, 0, NULL, 0
  277. };
  278.  
  279.     // RecvLine Property
  280. PROPINFO Property_RecvLine =
  281. {
  282.  "RecvLine",
  283.  DT_HSZ | PF_fGetMsg | PF_fSetMsg |
  284.     PF_fNoInitDef,
  285.  0,
  286.  0, 0, NULL, 0
  287. };
  288.  
  289.     // SendLine Property - not shown in dialog
  290. // SetMsg/SetData means that VB will set the element AND tell us
  291. PROPINFO Property_SendLine =
  292. {
  293.  "SendLine",
  294.  DT_HSZ | PF_fGetMsg | PF_fSetMsg |
  295.     PF_fNoInitDef | PF_fGetHszMsg,
  296.  0,
  297.  0, 0, NULL, 0
  298. };
  299.  
  300.         // Line Property - not visible in design time
  301. // This is the "default" property for this control
  302. // Get: same as Get on RecvLine
  303. // Set: same as Set on SendLine
  304. // Reason: Allows 'string = NetClient1' and 'NetClient1 = "output"'
  305. PROPINFO Property_Line =
  306. {
  307.  "Line",
  308.  DT_HSZ | PF_fGetMsg | PF_fSetMsg |
  309.     PF_fNoInitDef | PF_fNoShow,
  310.  0,              // Dummy, dummy!
  311.  0, 0, NULL, 0
  312. };
  313.  
  314.     // RecvBlock Property
  315. PROPINFO Property_RecvBlock =
  316. {
  317.  "RecvBlock",
  318.  DT_HLSTR | PF_fGetMsg | PF_fSetMsg    |
  319.     PF_fNoInitDef,
  320.  0,
  321.  0, 0, NULL, 0
  322. };
  323.  
  324.     // SendBlock Property - not shown in dialog
  325. PROPINFO Property_SendBlock =
  326. {
  327.  "SendBlock",
  328.  DT_HLSTR | PF_fGetData | PF_fSetMsg |
  329.     PF_fNoInitDef | PF_fGetHszMsg,
  330.  VBGETOFFSET(hlSendBlock),
  331.  0, 0, NULL, 0
  332. };
  333.  
  334.         // Block Property - not visible in design time
  335. // This is a convenience property for this control
  336. // Get: same as Get on RecvBlock
  337. // Set: same as Set on SendBlock
  338. // Reason: Allows single property to do binary input and output
  339. PROPINFO Property_Block =
  340. {
  341.  "Block",
  342.  DT_HSZ | PF_fGetMsg | PF_fSetMsg |
  343.     PF_fNoInitDef | PF_fNoShow,
  344.  0,              // Dummy, dummy!
  345.  0, 0, NULL, 0
  346. };
  347.  
  348.     // LineDelimiter Property
  349. PROPINFO Property_LineDelimiter =
  350. {
  351.  "LineDelimiter",
  352.  DT_HSZ | PF_fGetData | PF_fSetData | PF_fSetMsg |
  353.     PF_fSaveData,
  354.  VBGETOFFSET(hszLineDelimiter),
  355.  0, 0, NULL, 0
  356. };
  357.  
  358.  
  359.     // RecvCount Property - the valid bytes in RecvBuffer
  360. PROPINFO Property_RecvCount =
  361. {
  362.  "RecvCount",
  363.  DT_SHORT | PF_fGetMsg | PF_fSetMsg |
  364.     PF_fNoInitDef,
  365.  VBGETOFFSET(sRecvCount),
  366.  0, 0, NULL, 0
  367. };
  368.  
  369.     // SendCount Property - the valid bytes in SendBuffer
  370. // not shown in dialog.
  371. PROPINFO Property_SendCount =
  372. {
  373.  "SendCount",
  374.  DT_SHORT | PF_fGetMsg | PF_fSetMsg |
  375.     PF_fNoInitDef,
  376.  VBGETOFFSET(sSendCount),
  377.  0, 0, NULL, 0
  378. };
  379.  
  380.     // RecvSize Property - the size of the RecvBuffer
  381. PROPINFO Property_RecvSize =
  382. {
  383.  "RecvSize",
  384.  DT_SHORT | PF_fGetData | PF_fSetMsg |
  385.     PF_fSaveData | PF_fDefVal,
  386.  VBGETOFFSET(sRecvSize),
  387.  0, DEFAULT_RECVSIZE, NULL, 0
  388. };
  389.  
  390.     // SendSize Property - the size of the SendBuffer
  391. PROPINFO Property_SendSize =
  392. {
  393.  "SendSize",
  394.  DT_SHORT | PF_fGetData | PF_fSetMsg |
  395.     PF_fSaveData | PF_fDefVal,
  396.  VBGETOFFSET(sSendSize),
  397.  0, DEFAULT_SENDSIZE, NULL, 0
  398. };
  399.  
  400.     // RecvThreshold Property - cutoff before Event noticed
  401. // If data never passes this set threshold, no OnRecv is generated
  402. PROPINFO Property_RecvThreshold =
  403. {
  404.  "RecvThreshold",
  405.  DT_SHORT | PF_fSetData | PF_fGetData |
  406.     PF_fSaveData | PF_fDefVal,
  407.  VBGETOFFSET(sRecvThreshold),
  408.  0, DEFAULT_RECVTHRESHOLD, NULL, 0
  409. };
  410.  
  411.     // SendThreshold Property - cutoff before Event noticed
  412. // If data never drops below this set threshold, no OnSend is generated
  413. PROPINFO Property_SendThreshold =
  414. {
  415.  "SendThreshold",
  416.  DT_SHORT | PF_fSetData | PF_fGetData |
  417.     PF_fSaveData | PF_fDefVal,
  418.  VBGETOFFSET(sSendThreshold),
  419.  0, DEFAULT_SENDTHRESHOLD, NULL, 0
  420. };
  421.  
  422.     // Connect Property - Initiates connection
  423. // Remains false until connection exists, then Event
  424. // is triggered.
  425. PROPINFO Property_Connect =
  426. {
  427.  "Connect",
  428.  DT_BOOL | PF_fSetMsg | PF_fGetData |
  429.     PF_fNoInitDef,
  430.  VBGETOFFSET(bConnect),
  431.  0, FALSE, NULL, 0
  432. };
  433.  
  434.     // TimeOut Property - timeout in milliseconds
  435. // Do not exceed 32768 (~32 seconds)
  436. PROPINFO Property_TimeOut =
  437. {
  438.  "TimeOut",
  439.  DT_SHORT | PF_fSetMsg | PF_fGetData |
  440.     PF_fSaveData | PF_fDefVal,
  441.  VBGETOFFSET(sTimeOut),
  442.  0, 0, NULL, 0
  443. };
  444.  
  445.     // ErrorNumber Property
  446. // Hold the last WSAGetLastError() or a NetClient specific error
  447. PROPINFO Property_ErrorNumber =
  448. {
  449.  "ErrorNumber",
  450.  DT_SHORT | PF_fSetData | PF_fGetData |
  451.     PF_fNoInitDef,
  452.  VBGETOFFSET(sErrorNumber),
  453.  0, 0, NULL, 0
  454. };
  455.  
  456.     // ErrorMessage Property
  457. // Hold the last ErrorNumber's error message
  458. PROPINFO Property_ErrorMessage =
  459. {
  460.  "ErrorMessage",
  461.  DT_HSZ | PF_fSetMsg | PF_fGetMsg |
  462.     PF_fNoInitDef,
  463.  0,
  464.  0, 0, NULL, 0
  465. };
  466.  
  467.     // Version Property
  468. // Show the Version information.
  469. PROPINFO Property_Version =
  470. {
  471.  "Version",
  472.  DT_HSZ | PF_fSetMsg | PF_fGetMsg |
  473.     PF_fNoInitDef,
  474.  0,
  475.  0, 0, NULL, 0
  476. };
  477.  
  478.     // Debug Property
  479. // Show the Debug sockopt() state
  480. PROPINFO Property_Debug =
  481. {
  482.  "Debug",
  483.  DT_BOOL | PF_fSetMsg | PF_fGetMsg |
  484.     PF_fNoInitDef,
  485.  0,
  486.  0, 0, NULL, 0
  487. };
  488.  
  489.     // HostAliasCount Property
  490. // Report the number of aliases for HostName
  491. // (index into HostAliasList())
  492. PROPINFO Property_HostAliasCount =
  493. {
  494.  "HostAliasCount",
  495.  DT_SHORT | PF_fSetMsg | PF_fGetMsg |
  496.     PF_fNoInitDef,
  497.  0,
  498.  0, 0, NULL, 0
  499. };
  500.  
  501.     // HostAliasList Property
  502. // References array of aliases to HostName
  503. // (index with HostAliasCount)
  504. PROPINFO Property_HostAliasList =
  505. {
  506.  "HostAliasList",
  507.  DT_HSZ | PF_fPropArray | PF_fNoShow | PF_fSetMsg |
  508.     PF_fGetMsg | PF_fNoInitDef,
  509.  0,
  510.  0, 0, NULL, 0
  511. };
  512.  
  513.     // HostAddressCount Property
  514. // Report the number of addresses for HostName
  515. // (index into HostAddressList())
  516. PROPINFO Property_HostAddressCount =
  517. {
  518.  "HostAddressCount",
  519.  DT_SHORT | PF_fSetMsg | PF_fGetMsg |
  520.     PF_fNoInitDef,
  521.  0,
  522.  0, 0, NULL, 0
  523. };
  524.  
  525.     // HostAddressList Property
  526. // References array of aliases to HostName
  527. // (index with HostAddressCount)
  528. PROPINFO Property_HostAddressList =
  529. {
  530.  "HostAddressList",
  531.  DT_HSZ | PF_fPropArray | PF_fNoShow | PF_fSetMsg |
  532.     PF_fGetMsg | PF_fNoInitDef,
  533.  0,
  534.  0, 0, NULL, 0
  535. };
  536.  
  537.     // Host Property
  538. // Acts the same as HostAddr/HostName, but tries the former
  539. // before the latter (can handle DNS & I.P)
  540. PROPINFO Property_Host =
  541. {
  542.  "Host",
  543.  DT_HSZ | PF_fSetMsg | PF_fGetMsg | PF_fNoInitDef,
  544.  0,
  545.  0, 0, NULL, 0
  546. };
  547.  
  548.     // All of the VB1.00 properties - in dialog order
  549. PPROPINFO NetClient_Properties_VB1[] =
  550. {
  551.  PPROPINFO_STD_CTLNAME,
  552.  PPROPINFO_STD_PARENT,
  553.  PPROPINFO_STD_INDEX,
  554.  PPROPINFO_STD_TOP,
  555.  PPROPINFO_STD_LEFT,
  556.  PPROPINFO_STD_TAG,
  557.  PPROPINFO_STD_HWND,
  558.  &Property_About,
  559.  &Property_Socket,
  560.  &Property_HostName,
  561.  &Property_HostAddr,
  562.  &Property_LocalPort,
  563.  &Property_RemotePort,
  564.  &Property_RecvLine,
  565.  &Property_SendLine,
  566.  &Property_Line,
  567.  &Property_LineDelimiter,
  568.  &Property_RecvCount,
  569.  &Property_SendCount,
  570.  &Property_RecvSize,
  571.  &Property_SendSize,
  572.  &Property_RecvThreshold,
  573.  &Property_SendThreshold,
  574.  &Property_Connect,
  575.  &Property_TimeOut,
  576.  &Property_ErrorNumber,
  577.  &Property_ErrorMessage,
  578.  &Property_LocalService,
  579.  &Property_RemoteService,
  580.  &Property_Version,
  581.  &Property_Debug,
  582.  &Property_HostAliasCount,
  583.  &Property_HostAliasList,
  584.  &Property_HostAddressCount,
  585.  &Property_HostAddressList,
  586.  &Property_Host,
  587.  NULL
  588. };
  589.  
  590.     // All of the VB2.00 properties - in dialog order
  591. PPROPINFO NetClient_Properties_VB2[] =
  592. {
  593.  PPROPINFO_STD_NAME,
  594.  PPROPINFO_STD_PARENT,
  595.  PPROPINFO_STD_INDEX,
  596.  PPROPINFO_STD_TOPNORUN,
  597.  PPROPINFO_STD_LEFTNORUN,
  598.  PPROPINFO_STD_TAG,
  599.  PPROPINFO_STD_HWND,
  600.  &Property_About,
  601.  &Property_Socket,
  602.  &Property_HostName,
  603.  &Property_HostAddr,
  604.  &Property_LocalPort,
  605.  &Property_RemotePort,
  606.  &Property_RecvLine,
  607.  &Property_SendLine,
  608.  &Property_Line,
  609.  &Property_LineDelimiter,
  610.  &Property_RecvCount,
  611.  &Property_SendCount,
  612.  &Property_RecvSize,
  613.  &Property_SendSize,
  614.  &Property_RecvThreshold,
  615.  &Property_SendThreshold,
  616.  &Property_Connect,
  617.  &Property_TimeOut,
  618.  &Property_ErrorNumber,
  619.  &Property_ErrorMessage,
  620.  &Property_LocalService,
  621.  &Property_RemoteService,
  622.  &Property_Version,
  623.  &Property_Debug,
  624.  &Property_HostAliasCount,
  625.  &Property_HostAliasList,
  626.  &Property_HostAddressCount,
  627.  &Property_HostAddressList,
  628.  &Property_Host,
  629.  PPROPINFO_STD_NONE,        // Expansion room!
  630.  PPROPINFO_STD_NONE,
  631.  PPROPINFO_STD_NONE,
  632.  PPROPINFO_STD_NONE,
  633.  PPROPINFO_STD_NONE,
  634.  PPROPINFO_STD_NONE,
  635.  PPROPINFO_STD_NONE,
  636.      // These three are available only to VB2.00 apps
  637.  &Property_RecvBlock,
  638.  &Property_SendBlock,
  639.  &Property_Block,
  640.  NULL
  641. };
  642.  
  643.  
  644. // Parameters to the Events.
  645. // Currently all are (), due to random unexplained
  646. // GPFs during testing. See "misc.h" to see what
  647. // was trimmed.
  648.  
  649. EVENTINFO Event_OnConnect =
  650. {
  651.  "OnConnect",
  652.  0,
  653.  0,
  654.  NULL,
  655.  NULL
  656. };
  657.  
  658. EVENTINFO Event_OnRecv =
  659. {
  660.  "OnRecv",
  661.  0,
  662.  0,
  663.  NULL,
  664.  NULL
  665. };
  666.  
  667.     // The OnSend Event structure
  668. EVENTINFO Event_OnSend =
  669. {
  670.  "OnSend",
  671.  0,
  672.  0,
  673.  NULL,
  674.  NULL
  675. };
  676.  
  677.     // The OnClose Event structure
  678. EVENTINFO Event_OnClose =
  679. {
  680.  "OnClose",
  681.  0,
  682.  0,
  683.  NULL,
  684.  NULL
  685. };
  686.  
  687. EVENTINFO Event_OnTimeOut =
  688. {
  689.  "OnTimeOut",
  690.  0,
  691.  0,
  692.  NULL,
  693.  NULL
  694. };
  695.  
  696.  
  697. WORD Paramtypes_OnError[] = { ET_I2 };
  698.  
  699. EVENTINFO Event_OnError =
  700. {
  701.  "OnError",
  702.  1,
  703.  2,
  704.  Paramtypes_OnError,
  705.  "iErrorNumber As Integer"
  706. };
  707.  
  708. /*
  709. EVENTINFO Event_OnError =
  710. {
  711.  "OnError",
  712.  0,
  713.  0,
  714.  NULL,
  715.  NULL
  716. };
  717. */
  718.     // The NetClient Events listed in order
  719. PEVENTINFO NetClient_Events[] =
  720. {
  721.  &Event_OnConnect,
  722.  &Event_OnRecv,
  723.  &Event_OnSend,
  724.  &Event_OnClose,
  725.  &Event_OnTimeOut,
  726.  &Event_OnError,
  727.  NULL
  728. };
  729.  
  730. #ifdef VB100_CDK
  731.  
  732.     // The MODEL structure for the NetClient control (VB1.00)
  733. MODEL modelNetClient_VB1 =
  734. {
  735.  VB100_VERSION,
  736.  MODEL_fDesInteract | MODEL_fLoadMsg,
  737.  (PCTLPROC)NetClientCtlProc,
  738.  CS_VREDRAW | CS_HREDRAW,
  739.  WS_CHILD | WS_VISIBLE,
  740.  sizeof(NETCLIENT),
  741.  IDBMP_CLIENT,
  742.  "NetClient",
  743.  "NetClient",
  744.  NULL,
  745.  NetClient_Properties_VB1,
  746.  NetClient_Events,
  747.  IPROP_NETCLIENT_LINE,
  748.  IEVENT_NETCLIENT_ONCONNECT
  749. };
  750.  
  751. #endif /* VB100_CDK */
  752.  
  753.  
  754. #ifdef VB200_CDK
  755.  
  756.     // The MODEL structure for the NetClient control! (VB2.00)
  757. MODEL modelNetClient_VB2 =
  758. {
  759.  VB200_VERSION,
  760.  MODEL_fDesInteract | MODEL_fInvisAtRun | MODEL_fLoadMsg,
  761.  (PCTLPROC)NetClientCtlProc,
  762.  CS_VREDRAW | CS_HREDRAW,
  763.  WS_CHILD | WS_VISIBLE,
  764.  sizeof(NETCLIENT),
  765.  IDBMP_CLIENT,
  766.  "NetClient",
  767.  "NetClient",
  768.  NULL,
  769.  NetClient_Properties_VB2,
  770.  NetClient_Events,
  771.  IPROP_NETCLIENT_LINE,
  772.  IEVENT_NETCLIENT_ONCONNECT,
  773.  IPROP_NETCLIENT_LINE
  774. };
  775.  
  776. #endif /* VB200_CDK */
  777.  
  778.  
  779. #ifdef VB300_CDK
  780.  
  781.     // The MODEL structure for the NetClient control (VB3.00+)
  782. MODEL modelNetClient_VB3 =
  783. {
  784.  VB300_VERSION,
  785.  MODEL_fDesInteract | MODEL_fInvisAtRun | MODEL_fLoadMsg,
  786.  (PCTLPROC)NetClientCtlProc,
  787.  CS_VREDRAW | CS_HREDRAW,
  788.  WS_CHILD | WS_VISIBLE,
  789.  sizeof(NETCLIENT),
  790.  IDBMP_CLIENT,
  791.  "NetClient",
  792.  "NetClient",
  793.  NULL,
  794.  NetClient_Properties_VB2,  // This will most likely change
  795.  NetClient_Events,
  796.  IPROP_NETCLIENT_LINE,
  797.  IEVENT_NETCLIENT_ONCONNECT,
  798.  IPROP_NETCLIENT_LINE,
  799.  WSANET_VERSION
  800. };
  801.  
  802. #endif /* VB300_CDK */
  803.  
  804.     // All of the help "context-id's" are referenced through
  805.     // this table
  806. static WORD wNetClientHelpProps[] =
  807. {
  808.  PROPERTY_NAME,
  809.  PROPERTY_PARENT,
  810.  PROPERTY_INDEX,
  811.  PROPERTY_TOP,
  812.  PROPERTY_LEFT,
  813.  PROPERTY_TAG,
  814.  PROPERTY_HWND,
  815.     /* Custom properties */
  816.  PROPERTY_ABOUT,
  817.  NC_PROP_SOCKET,
  818.  NC_PROP_HOSTNAME,
  819.  NC_PROP_HOSTADDR,
  820.  NC_PROP_LOCALPORT,
  821.  NC_PROP_REMOTEPORT,
  822.  NC_PROP_RECVLINE,
  823.  NC_PROP_SENDLINE,
  824.  NC_PROP_LINE,
  825.  NC_PROP_LINEDELIMITER,
  826.  NC_PROP_RECVCOUNT,
  827.  NC_PROP_SENDCOUNT,
  828.  NC_PROP_RECVSIZE,
  829.  NC_PROP_SENDSIZE,
  830.  NC_PROP_RECVTHRESHOLD,
  831.  NC_PROP_SENDTHRESHOLD,
  832.  NC_PROP_CONNECT,
  833.  NC_PROP_TIMEOUT,
  834.  NC_PROP_ERRORNUMBER,
  835.  NC_PROP_ERRORMESSAGE,
  836.  NC_PROP_LOCALSERVICE,    // Change from alpha 2!
  837.  NC_PROP_REMOTESERVICE,
  838.  NC_PROP_VERSION,
  839.  NC_PROP_DEBUG,
  840.  NC_PROP_HOSTALIASCOUNT,
  841.  NC_PROP_HOSTALIASLIST,
  842.  NC_PROP_HOSTADDRESSCNT,
  843.  NC_PROP_HOSTADDRESSLIST,
  844.  NC_PROP_HOST,
  845.  PROPERTY_UNUSED,
  846.  PROPERTY_UNUSED,
  847.  PROPERTY_UNUSED,
  848.  PROPERTY_UNUSED,
  849.  PROPERTY_UNUSED,
  850.  PROPERTY_UNUSED,
  851.  PROPERTY_UNUSED,
  852.      // These three are only available to VB2.00+ apps
  853.  NC_PROP_RECVBLOCK,
  854.  NC_PROP_SENDBLOCK,
  855.  NC_PROP_BLOCK,
  856.  NULL
  857. };
  858.  
  859. static WORD wNetClientHelpEvents[] =
  860. {
  861.  NC_EVNT_ONCONNECT,
  862.  NC_EVNT_ONRECV,
  863.  NC_EVNT_ONSEND,
  864.  NC_EVNT_ONCLOSE,
  865.  NC_EVNT_ONTIMEOUT,
  866.  NC_EVNT_ONERROR,
  867.  NULL
  868. };
  869.  
  870. #endif /* WSANet_C */
  871.  
  872. /* End of NetClnt.H */
  873.